GdkDrawable *impl; /* window-system-specific delegate object */
GdkWindowObject *parent;
+ GdkVisual *visual;
gpointer user_data;
void _gdk_window_impl_new (GdkWindow *window,
GdkWindow *real_parent,
GdkScreen *screen,
- GdkVisual *visual,
GdkEventMask event_mask,
GdkWindowAttr *attributes,
gint attributes_mask);
GType gdk_offscreen_window_get_type (void);
void _gdk_offscreen_window_new (GdkWindow *window,
GdkScreen *screen,
- GdkVisual *visual,
GdkWindowAttr *attributes,
gint attributes_mask);
void
_gdk_offscreen_window_new (GdkWindow *window,
GdkScreen *screen,
- GdkVisual *visual,
GdkWindowAttr *attributes,
gint attributes_mask)
{
offscreen->colormap = g_object_ref (attributes->colormap);
else
{
- if (gdk_screen_get_system_visual (screen) == visual)
+ if (gdk_screen_get_system_visual (screen) == private->visual)
{
offscreen->colormap = gdk_screen_get_system_colormap (screen);
g_object_ref (offscreen->colormap);
}
else
- offscreen->colormap = gdk_colormap_new (visual, FALSE);
+ offscreen->colormap = gdk_colormap_new (private->visual, FALSE);
}
offscreen->surface = gdk_window_create_similar_surface ((GdkWindow *)private->parent,
GdkWindow *window;
GdkWindowObject *private;
GdkScreen *screen;
- GdkVisual *visual;
int x, y;
gboolean native;
GdkEventMask event_mask;
}
if (attributes_mask & GDK_WA_VISUAL)
- visual = attributes->visual;
+ private->visual = attributes->visual;
else
- visual = gdk_screen_get_system_visual (screen);
+ private->visual = gdk_screen_get_system_visual (screen);
private->event_mask = attributes->event_mask;
if (attributes->wclass == GDK_INPUT_OUTPUT)
{
private->input_only = FALSE;
- private->depth = visual->depth;
+ private->depth = private->visual->depth;
/* XXX: Cache this somehow? */
private->background = cairo_pattern_create_rgb (0, 0, 0);
if (gdk_window_is_offscreen (private))
{
- _gdk_offscreen_window_new (window, screen, visual, attributes, attributes_mask);
+ _gdk_offscreen_window_new (window, screen, attributes, attributes_mask);
private->impl_window = private;
}
else if (native)
event_mask = get_native_event_mask (private);
/* Create the impl */
- _gdk_window_impl_new (window, real_parent, screen, visual, event_mask, attributes, attributes_mask);
+ _gdk_window_impl_new (window, real_parent, screen, event_mask, attributes, attributes_mask);
private->impl_window = private;
/* This will put the native window topmost in the native parent, which may
GdkWindowObject *impl_window;
GdkDrawable *new_impl, *old_impl;
GdkScreen *screen;
- GdkVisual *visual;
GdkWindowAttr attributes;
GdkWindowObject *above;
GList listhead;
gdk_window_drop_cairo_surface (private);
screen = gdk_drawable_get_screen (window);
- visual = gdk_drawable_get_visual (window);
attributes.colormap = gdk_drawable_get_colormap (window);
old_impl = private->impl;
_gdk_window_impl_new (window, (GdkWindow *)private->parent,
- screen, visual,
+ screen,
get_native_event_mask (private),
&attributes, GDK_WA_COLORMAP);
new_impl = private->impl;
_gdk_window_impl_new (GdkWindow *window,
GdkWindow *real_parent,
GdkScreen *screen,
- GdkVisual *visual,
GdkEventMask event_mask,
GdkWindowAttr *attributes,
gint attributes_mask)
}
else
{
- if (visual == gdk_screen_get_system_visual (_gdk_screen))
+ if (private->visual == gdk_screen_get_system_visual (_gdk_screen))
{
draw_impl->colormap = gdk_screen_get_system_colormap (_gdk_screen);
g_object_ref (draw_impl->colormap);
}
- else if (visual == gdk_screen_get_rgba_visual (_gdk_screen))
+ else if (private->visual == gdk_screen_get_rgba_visual (_gdk_screen))
{
draw_impl->colormap = gdk_screen_get_rgba_colormap (_gdk_screen);
g_object_ref (draw_impl->colormap);
}
else
{
- draw_impl->colormap = gdk_colormap_new (visual, FALSE);
+ draw_impl->colormap = gdk_colormap_new (private->visual, FALSE);
}
}
}
private = (GdkWindowObject *)_gdk_root;
private->impl = g_object_new (_gdk_window_impl_get_type (), NULL);
private->impl_window = private;
+ private->visual = gdk_screen_get_system_visual (_gdk_screen);
impl = GDK_WINDOW_IMPL_QUARTZ (GDK_WINDOW_OBJECT (_gdk_root)->impl);
private = (GdkWindowObject *)_gdk_root;
private->impl = g_object_new (_gdk_window_impl_get_type (), NULL);
private->impl_window = private;
+ private->visual = gdk_screen_get_system_visual (screen);
draw_impl = GDK_DRAWABLE_IMPL_WIN32 (private->impl);
_gdk_window_impl_new (GdkWindow *window,
GdkWindow *real_parent,
GdkScreen *screen,
- GdkVisual *visual,
GdkEventMask event_mask,
GdkWindowAttr *attributes,
gint attributes_mask)
dwExStyle = 0;
private->input_only = FALSE;
- private->depth = visual->depth;
if (attributes_mask & GDK_WA_COLORMAP)
{
window = g_object_new (GDK_TYPE_WINDOW, NULL);
private = (GdkWindowObject *)window;
+ private->visual = gdk_screen_get_system_visual (_gdk_screen);
private->impl = g_object_new (_gdk_window_impl_get_type (), NULL);
impl = GDK_WINDOW_IMPL_WIN32 (private->impl);
draw_impl = GDK_DRAWABLE_IMPL_WIN32 (private->impl);
private = (GdkWindowObject *) screen_x11->root_window;
private->impl = g_object_new (_gdk_window_impl_get_type (), NULL);
private->impl_window = private;
+ private->visual = gdk_screen_get_system_visual (screen);
draw_impl = GDK_DRAWABLE_IMPL_X11 (private->impl);
_gdk_window_impl_new (GdkWindow *window,
GdkWindow *real_parent,
GdkScreen *screen,
- GdkVisual *visual,
GdkEventMask event_mask,
GdkWindowAttr *attributes,
gint attributes_mask)
xattributes_mask = 0;
- xvisual = ((GdkVisualPrivate*) visual)->xvisual;
+ xvisual = ((GdkVisualPrivate*) private->visual)->xvisual;
if (attributes_mask & GDK_WA_NOREDIR)
{
}
else
{
- if ((((GdkVisualPrivate *)gdk_screen_get_system_visual (screen))->xvisual) == xvisual)
+ if ((((GdkVisualPrivate *)gdk_screen_get_system_visual (screen))->xvisual) == xvisual)
{
draw_impl->colormap = gdk_screen_get_system_colormap (screen);
g_object_ref (draw_impl->colormap);
}
else
{
- draw_impl->colormap = gdk_colormap_new (visual, FALSE);
+ draw_impl->colormap = gdk_colormap_new (private->visual, FALSE);
}
}
gdk_window_foreign_new_for_display (GdkDisplay *display,
GdkNativeWindow anid)
{
+ GdkScreen *screen;
GdkWindow *window;
GdkWindowObject *private;
GdkWindowImplX11 *impl;
if (children)
XFree (children);
+ screen = _gdk_x11_display_screen_for_xrootwin (display, root);
+
window = g_object_new (GDK_TYPE_WINDOW, NULL);
private = (GdkWindowObject *) window;
private->impl = g_object_new (_gdk_window_impl_get_type (), NULL);
private->impl_window = private;
+ private->visual = gdk_x11_screen_lookup_visual (screen,
+ XVisualIDFromVisual (attrs.visual));
impl = GDK_WINDOW_IMPL_X11 (private->impl);
draw_impl = GDK_DRAWABLE_IMPL_X11 (private->impl);
draw_impl->wrapper = GDK_DRAWABLE (window);
- draw_impl->screen = _gdk_x11_display_screen_for_xrootwin (display, root);
+ draw_impl->screen = screen;
private->parent = gdk_xid_table_lookup_for_display (display, parent);